Conversation
This was referenced Jan 20, 2026
🔎 FLASH Analysispx4_fmu-v5x [Total VM Diff: 1056 byte (0.05 %)]px4_fmu-v6x [Total VM Diff: 1032 byte (0.05 %)]Updated: 2026-02-20T16:12:58 |
3d71568 to
fb42fb5
Compare
bresch
requested changes
Jan 23, 2026
fb42fb5 to
adedf00
Compare
bresch
requested changes
Jan 23, 2026
sfuhrer
reviewed
Jan 29, 2026
Contributor
sfuhrer
left a comment
There was a problem hiding this comment.
Have a look at the CI failure
hamishwillee
reviewed
Feb 3, 2026
81c1c6c to
a016128
Compare
bresch
requested changes
Feb 19, 2026
Member
bresch
left a comment
There was a problem hiding this comment.
Looks good to me, some minor comments
Add dedicated AuxGlobalPosition uORB message to replace the previous approach of reusing VehicleGlobalPosition for auxiliary global position sources.
Add per-instance parameters for auxiliary global position sources, allowing configuration of up to 4 AGP slots with individual source IDs.
Refactor auxiliary global position fusion to support multiple AGP sources. Add AgpSourceControl manager class that routes AGP messages to the correct AgpSource instance based on configured source IDs. Only instantiate AgpSource slots that have a configured ID on boot. Move AGP subscriptions to manager class for correct message routing.
Update integrations to use the new AuxGlobalPosition message instead of the VehicleGlobalPosition-based aux_global_position topic.
Update the AGP simulator to publish the new AuxGlobalPosition message type with the required source ID field.
4cd9c6b to
0d115d7
Compare
0d115d7 to
2324aef
Compare
bresch
approved these changes
Feb 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is part of the split up of #26151
Solved Problem
EKF2 could only fuse a single Auxiliary Global Position (AGP) source, limiting the ability to use multiple external positioning systems simultaneously, e.g., visual navigation, pseudolites.
Solution
This PR enables EKF2 to fuse up to 4 independent AGP sources simultaneously:
New uORB message type (
AuxGlobalPosition)VehicleGlobalPositionidfield to identify the sourcesourcefield for position source type (GNSS, Vision, Pseudolites, etc.)Per-instance EKF2 parameters (
EKF2_AGP0-3_*)EKF2_AGP{N}_ID: Sensor ID mapping (parameter slot → message ID)EKF2_AGP{N}_*CTRL,MODE,DELAY,NOISE,GATERefactored fusion architecture
AgpSourceclass patternidfield routes to parameter slotChangelog Entry
For release notes:
Test coverage
Tested in simulation with mock mavlink and ROS messages. Tested in flight.
Known Limitations
Non-standard EKF pattern: The AGP code uses
#if defined(CONFIG_EKF2_AUX_GLOBAL_POSITION) && defined(MODULE_NAME)because it places uORB subscriptions and parameter handling directly in the EKF library. The standard pattern (GNSS, EV) keeps uORB/params inEKF2.cppand passes data viasetXxxData()methods. This deviation enables dynamic multi-instance parameter lookup and self-contained source management, but is noted as technical debt.Additional Notes
Extension of multi-sensor capability to Optical Flow or GNSS is planned. The manager + per-source pattern can be generalized to avoid duplicate code.
Depends on: DDS multi-instance PR #26305